function    A209()
format long;


% 系统误差分析
% 系统误差是在重复条件下，对同一被测量实行无限多次测量结果的平均值减去被测量值。常用残差统计法、组间数据检验等判断法。

% 残差统计法-散点图
data_x = xlsread('A209_data.xlsx', 1, 'A1:A100');      % 读取原数据
sampling_time = 1: 1: length(data_x);                  % 计算采样次数
% 散点图
subplot(2, 2, 1)
plot(sampling_time, data_x, 'bo');
title('散点图')
xlabel('采样次数')
ylabel('采样数据的散点图')

% 残差正负号的分配检验法
mean_x = mean(data_x);
C_sign = sign(data_x-mean_x);
omega = 0;
n = length(data_x);
for i = 1 : n-1
    omega = omega+C_sign(i)*C_sign(i+1);
end
% 残差正负号的分布图
subplot(2, 2, 2)
plot(sampling_time, C_sign, 'b*');
title('残差正负号的分布图')
xlabel('采样次数')
ylabel('残差正负号')
if abs(omega) <= 2*sqrt(n-1)
    legend(['不存在显著的可变系统误差|\omega|=', num2str(omega), '<=2*sqrt(n-1)='], num2str(2*sqrt(n-1)));
else
    legend(['存在显著的可变系统误差|\omega|=', num2str(omega), '>2*sqrt(n-1)=', num2str(2*sqrt(n-1))]);
end

% 残余误差校核法
m = round(n/2);
D_value = sum(data_x(1: m)-mean_x)-sum(data_x(m+1: n)-mean_x);
% 残差误差校核分布图
subplot(2, 2, 3)
plot(sampling_time, data_x-mean_x, 'b*');
title('残余误差校核法')
xlabel('采样次数')
ylabel('残余误差')
legend(['残余误差和之差\Delta=', num2str(D_value)]);

% 序差检验法
B = 0;
A = -((data_x(i)-mean_x)^2+(data_x(n)-mean_x)^2)/2;;

% 循环计算B和A
for i = 1:n-1
    B = B + (data_x(i) - mean_x)^2;
    A = A + (data_x(i) - mean_x)^2;
end

% 计算序差检验的结果
if A ~= 0
    order_diff = abs(1 - B / A);
else
    order_diff = NaN;  % 如果A为零，避免除零错误
end

subplot(2, 2, 4);
plot(sampling_time, data_x - mean_x, 'b*');
title('序差检验法');
xlabel('采样次数');
ylabel('残余误差');

% 显示结果
if order_diff < 2/sqrt(n-1)
    legend(['不存在显著的可变系统误差 |B - B/A| = ', num2str(order_diff), ' < 2/sqrt(n-1) = ', num2str(2/sqrt(n-1))]);
else
    legend(['存在显著的可变系统误差 |B - B/A| = ', num2str(order_diff), ' > 2/sqrt(n-1) = ', num2str(2/sqrt(n-1))]);
end
  
